# 编译器
CC = gcc

# 编译选项
CFLAGS = -Wall -Wextra -g -I.

# 目标文件夹
BUILD_DIR = build

# 源文件列表
SRC = \
	drv_xtp2046.c \
	drv_xtp2046_interface.c \
	main.c

# 对应的目标文件
OBJ = $(SRC:%.c=$(BUILD_DIR)/%.o)

# 最终可执行文件
TARGET = $(BUILD_DIR)/touchscreen_app

# 默认目标
all: $(TARGET)

# 链接目标
$(TARGET): $(OBJ)
	$(CC) $(CFLAGS) $(OBJ) -o $@

# 特定 .c -> .o 的编译规则（处理 drv_xtp2046.c 和 drv_xtp2046_interface.c 依赖头文件）
$(BUILD_DIR)/drv_xtp2046.o: drv_xtp2046.c drv_xtp2046.h
	$(CC) $(CFLAGS) -c $< -o $@

$(BUILD_DIR)/drv_xtp2046_interface.o: drv_xtp2046_interface.c drv_xtp2046_interface.h
	$(CC) $(CFLAGS) -c $< -o $@

# main.c 可能没有 main.h，单独定义规则
$(BUILD_DIR)/main.o: main.c
	$(CC) $(CFLAGS) -c $< -o $@

# 创建构建目录
$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

# 清理编译产物
clean:
	rm -rf $(BUILD_DIR)

# 重新编译
rebuild: clean all